package com.wl.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.wl.dao.Approve_02Mapper;
import com.wl.dao.LoginfoMapper;
import com.wl.entity.Approve_02;
import com.wl.entity.Loginfo;
import com.wl.service.Approve_02Service;
import com.wl.util.PageData;

@Service
public class Approve_02ServiceImpl implements Approve_02Service {

	// 注入DAO
	@Autowired
	private Approve_02Mapper mp02;

	// 注入loginfomapper
	@Autowired
	private LoginfoMapper logmapper;

	/**
	 * 01环节提交给02表里增加数据
	 * 
	 * @param record
	 * @return
	 */
	@Override
	public boolean insert(Approve_02 record) {
		// 调用DAO中的增加方法
		int n = mp02.insert(record);
		return n > 0;
	}

	/**
	 * 按照编号查找该处理人当前未处理流程
	 * 
	 * @param dmno
	 * @return
	 */
	@Override
	public PageData<Approve_02> selectNotHandByName(String dmno, int page, int limit) {
		// 设置起始位置
		int start = 0;
		if (page >= 1) {
			start = (page - 1) * limit;
		}

		// 查询总页数
		int totalCount = mp02.selectCountNotHand(dmno);

		// 分页数据
		List<Approve_02> data = mp02.selectNotHandByName(dmno, start, limit);

		// 把数据放到封装好的PageData类中
		PageData<Approve_02> pageData = new PageData<Approve_02>(data, totalCount, limit, page);

		// 设置这两个参数和Layui保持一致
		pageData.setCode(0);
		pageData.setMsg("");

		// 返回
		return pageData;
	}

	/**
	 * 根据流程编号修改信息 用于02环节提交更新02表里的数据 未处理变已处理
	 * 
	 * @param flowid
	 * @return
	 */
	@Override
	@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
	public boolean updateDataByFlowid(Approve_02 approve02, Loginfo log) {
		// TODO Auto-generated method stub
		mp02.updateDataByFlowid(approve02);
		// 调用loginfoMapper中的方法
		logmapper.insert(log);
		return true;
	}

	/**
	 * 按照编号查找该处理人当前未处理流程 分页
	 * 
	 * @param dmno
	 * @return
	 */
	@Override
	public PageData<Approve_02> selectApprovedByName(String dmno, int page, int limit) {
		// 设置起始位置
		int start = 0;
		if (page >= 1) {
			start = (page - 1) * limit;
		}

		// 查询总页数
		int totalCount = mp02.selectCountApproved(dmno);

		// 分页数据
		List<Approve_02> data = mp02.selectApprovedByName(dmno, start, limit);

		// 把数据放到封装好的PageData类中
		PageData<Approve_02> pageData = new PageData<Approve_02>(data, totalCount, limit, page);

		// 设置这两个参数和Layui保持一致
		pageData.setCode(0);
		pageData.setMsg("");

		// 返回
		return pageData;
	}
	
	
	/**
	 * 根据申请编号查询 用于历史审批记录
	 * @param flowid
	 * @return
	 */
	@Override
	public Approve_02 selectByFlowid(String flowid) {
		// TODO Auto-generated method stub
		return mp02.selectByFlowid(flowid);
	}

}
